<template>
  <div>
    <form-page v-if="pageType==='commonPage'" ref="formPage" />
    <edit-page v-else-if="pageType==='editPage'" ref="editPage" />
    <hd-page v-else-if="pageType==='hdPage'" ref="hdPage" />
  </div>
</template>
<script>
import EditPage from "@/components/TkCommonPage/pages/EditPage.vue"
import FormPage from "@/components/TkCommonPage/pages/FormPage.vue"
import HdPage from "@/components/TkCommonPage/pages/HdPage.vue"

export default {
  name: "Index",
  components: {
    EditPage,
    FormPage,
    HdPage
  },
  props: {
    bgPath: { // 请求地址
      type: String,
      required: true
    },
    webPath: { // 跳转地址
      type: String,
      required: true
    },
    searchItems: { // 搜索框配置
      type: Array,
      default: () => []
    },
    columns: { // 表格列配置
      type: Array,
      default: () => []
    },
    formItems: { // 表单配置
      type: Array,
      default: () => []
    },
    dTableConfig: { // 子表配置
      type: Array,
      default: () => {
        return []
      }
    },
    editorItems: { // 富文本配置
      type: Array,
      default: () => []
    },
    pageType: { // 页面类型 commonPage - 普通页面 hdPage - 主子表页面 editorPage 编辑
      type: String,
      default: "commonPage"
    },
    useStore: { // 是否使用门店
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      // ===== ===== ===== ===== 全局属性 ===== ===== ===== =====
      // 界面模式  info - 信息页, list - 列表页
      viewMode: '',
      // 编辑模式  add - 新增模式, edit - 编辑模式, details - 详情模式, list - 列表模式
      mode: '',
      // 表单
      formData: {
        head: {},
        body: {}
      }
    }
  },
  created() {
    // 获取视图模式
    this.viewMode = this.$route.params.viewMode || "list"
    this.mode = this.$route.params.mode || "list"
  },
  methods: {
    /**
     * 更新表单
     * @param key
     * @param value
     */
    updateFormData(key, value) {
      switch (this.pageType) {
        case "editorPage":
          break
        case "commonPage":
          this.$refs.formPage.updateFormData(key, value)
          break
        case "hdPage":
          this.$refs.hdPage.updateHForm(key, value)
          break
        default:
          break
      }
    },
    /**
     * 更新子表
     * @param line
     * @param dName
     * @param key
     * @param value
     */
    updateDTableData(line, dName, key, value) {
      this.$set(this.formData.body[dName][line], key, value)
    }
  },
  provide() {
    return {
      pageData: this
    }
  }
}
</script>

<style scoped lang="scss">

</style>
